package br.com.geral;

import java.sql.*;

/*
 * Esta classe realiza a conex�o com o banco de dados atrav�s do driver odbc
 * nativo do Windows para SQL Server.
 * Esta classe � um singleton, o que significa que n�o pode ser instanciada.
 * Quando houver necessidade de utiliz�-la, utilize o m�todo getInstance
 * */
public class Conexao {
	
	private static Conexao conexaoSingleton;
	private Connection conexao;
	private Statement stm;
	
	/*
	 * Retorna o singleton desta classe
	 * */
	public static Conexao getInstance(){
		if (conexaoSingleton == null)
			conexaoSingleton =new Conexao(); 
		return conexaoSingleton;
	}
	
	/*
	 * Retorna o objeto de conex�o ao banco de dados
	 * */
	public Connection getConexao() {
		return conexao;
	}
	
	/*
	 * Executa uma query (SELECT) e retorna um ResultSet com os records
	 * */
	public ResultSet getSelect(String query){
		ResultSet rs = null;
		try{
			rs = this.stm.executeQuery(query);
		}catch(Exception e){}
		return rs;
	}
	
	
	/*
	 * Exeuta uma query (INSERT, UPDATE OU DELETE) e retorna 1 (Ok) ou 0 (erro na query)
	 * */
	public int getExecute(String query){
		try{
			return this.stm.executeUpdate(query);
		}catch(Exception e){ 
			return 0;
		}
	}

	
	/*
	 * Cria um objeto de conex�o com o banco de dados atrav�s dos par�metros presentes
	 * no arquivo de configura��o do sistema (br.com.geral.config.properties).
	 * Inst�ncia o singleton e os objetos da classe.
	 * */
	private Conexao(){
		String dbname = Funcoes.getParametro("dbname");
		String user = Funcoes.getParametro("user");
		String passw = Funcoes.getParametro("passw");
		String driver = Funcoes.getParametro("driver");
		String stringConexao = "";
		if (Funcoes.getParametro("banco") == "1")
			stringConexao = "jdbc:odbc:" + dbname;
		else
			stringConexao = "jdbc:mysql://localhost:3306/" + dbname;
		try{
			Class.forName(driver).newInstance();
			this.conexao = DriverManager.getConnection(stringConexao, user, passw);
			this.stm = this.conexao.createStatement();
		}catch(Exception e){}
	}
}
